package cn.edu.ujn.controller;

import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspException;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import cn.edu.ujn.dao.BaseDict;
import cn.edu.ujn.dao.User;
import cn.edu.ujn.service.IUserService;
import cn.edu.ujn.utils.Page;

@Controller
public class UserController {

	@Autowired
	private IUserService userService;
	/**
	 * 用户登录
	 */
	@RequestMapping(value = "/login.action",method = RequestMethod.POST)
	public String login(String usercode, String password, Model model, HttpSession session) {
		// 通过账号和密码查询用户
		User user = userService.findUser(usercode, password);
		if (user != null) {
			// 将用户对象添加到Session
			session.setAttribute("USER_SESSION", user);
			// 跳转到主页面
		
			return "redirect:customer/list.action";
		}
		model.addAttribute("msg", "账号或密码错误，请重新输入！");
		// 返回到登录页面
		return "login";
	}
	@RequestMapping("/index")
	public String index() {
		
		return "login";
	}
	/**
	 * 退出登录
	 */
	@RequestMapping(value = "/logout.action")
	public String logout(HttpSession session) {
	    // 去掉Session
	    session.removeAttribute("USER_SESSION");
	    // 重定向到登录页面的跳转方法
	    return "redirect:login";
	}
	/**
	 * 用户列表管理
	 */
	@RequestMapping("/user/list.action")
	public String searchByCondition(@RequestParam(defaultValue = "1") Integer page,
			@RequestParam(defaultValue = "9") Integer rows, @RequestParam(defaultValue = "") String keyWord,
			Model model) throws JspException {
		// 返回分页对象
		Page<User> users = userService.selectByCondintion(page, rows, keyWord);
		// 保存数据到前端
		model.addAttribute("page", users);
		// 将搜索栏的输入值固定下来
		model.addAttribute("keyWord", keyWord);
		
		return "user";
	}
	
	// 判断创建账号是否存在
		@RequestMapping("/user/isExistByUserCode.action")
		@ResponseBody // 这里将返回值转为json格式的数据,让jsp前端通过调用
		public String isExistByUserCode(String user_code) {
			if(user_code==null||"".equals(user_code)) return "empty";
			User exist = userService.getUserByUserCode(user_code);
			if (exist== null) {
				return "OK";
			} else {
				return "already exist";
			}

		}
	// 创建字典
		@RequestMapping("/user/create.action")
		@ResponseBody // 这里将返回值转为json格式的数据,让jsp前端通过调用
		public String creatUser(User user) {
			// 创建客户
			int creat = userService.creatUser(user);
			if (creat > 0) { // 创建成功
				return "OK";// 必须返回OK,成功后jsp页面对data中数据做OK判断
			} else {
				return "FAIL";
			}

		}
	//更改用户,pwd为密码标准位，如果设置新密码应该重新加密
		@RequestMapping("/user/update.action")
		@ResponseBody//这里将返回值转为json格式的数据,让jsp前端通过调用
		public String updateUser(User user,String pwd) {
			System.out.println(user);
			System.out.println(pwd);
			 int update = userService.updateUser(user,pwd);
			 if(update > 0){	//更新成功		
			        return "OK";//必须返回OK,成功后jsp页面对data中数据做OK判断
			    }else{
			        return "FAIL";			
			    }
		}
	//得到id用户的信息
		@RequestMapping("/user/getUserById.action")
		@ResponseBody//这里将返回值转为json格式的数据,让jsp前端通过调用
		public User getUserById(Integer id) {
			return userService.getUserById(id);
		}
	// 删除用户，将enable标志位设置为0
		@RequestMapping("/user/delete.action")
		@ResponseBody // 这里将String 为json格式的数据,让jsp前端通过调用
		public String deleteUser(Integer id) {
			int rows = userService.deleteUser(id);
			if (rows > 0) { // 删除成功
				return "OK";// 必须返回OK,成功后jsp页面对data中数据做OK判断
			} else {
				return "FAIL";
			}
		}
}
